package com.atguigu.bean;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;

public class Cart {
    //购物车分为
    //1.购物项
   private HashMap<Integer,CartItem> map=new HashMap<>();
    //2.书的总数量
    private int totalCount;
    //3.书的总金额
    private double totalAmount;


    public List<CartItem> getAllCartItem(){
        Collection<CartItem> values = map.values();
        List<CartItem> list= new ArrayList<>(values);
        return list;
    }



    public int getTotalCount() {
        int totalCount=0;
        List<CartItem> allCartItem = getAllCartItem();
        for (CartItem cartItem : allCartItem) {
            totalCount+=cartItem.getCount();
        }
        return totalCount;
    }

    public double getTotalAmount() {
    BigDecimal totalAmount = new BigDecimal("0");
        List<CartItem> allCartItem = getAllCartItem();
        for (CartItem value : allCartItem) {
            BigDecimal amount = new BigDecimal(value.getAmount() + "");
            totalAmount=totalAmount.add(amount);
        }
        return totalAmount.doubleValue();
    }

    /**
     * 将图书加入购物车
     * @param book
     */
      public void addCart(Book book){
        //先判断购物车内是否有此图书
          CartItem cartItem = map.get(book.getId());
          if(cartItem==null){
              //为空说明购物车内没有此图书
              CartItem cartItem1 = new CartItem(book, 1);
              map.put(book.getId(),cartItem1);
          }else{
              //不为空说明该图书已经添加过了
              cartItem.setCount(cartItem.getCount()+1);
          }
      }

      //删除购物项
    public  void deleteCartItem(int id){
          map.remove(id);
    }
    //购物项数量增加
    public void addCount(int id){
        CartItem cartItem = map.get(id);
        cartItem.setCount(cartItem.getCount()+1);
    }
    //购物项的数量减少
    public void subtractCount(int id){
        CartItem cartItem = map.get(id);
        if(cartItem.getCount()==1){
            map.remove(id);
        }else {
            cartItem.setCount(cartItem.getCount()-1);
        }
    }
    //修改购物项的数量
    public void changesCount(int id, int newCount){
        CartItem cartItem = map.get(id);
        cartItem.setCount(newCount);
    }
}
